home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Database / DateFormatter / DateTFCell.m < prev    next >
Text File  |  1995-06-12  |  2KB  |  72 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "DateTFCell.h"
  5. #import <appkit/appkit.h>
  6.  
  7. @implementation DateTFCell
  8.  
  9. - select:(const NXRect *)aRect inView:controlView editor:textObj delegate:anObject start:(int)selStart length:(int)selLength
  10. {
  11.     /* do what the superclass would do */
  12.     [super select:aRect inView:controlView editor:textObj delegate:anObject start:selStart length:selLength];
  13.  
  14.     /* get the current text filter function */
  15.     oldTextFilter = [textObj textFilter];
  16.     
  17.     /* set the filter func to be the custom function for DateTextField */
  18.     [textObj setTextFilter:(NXTextFilterFunc)dateFilter];
  19.     return self;
  20. }
  21.  
  22. - edit:(const NXRect *)aRect inView:controlView editor:textObj delegate:anObject event:(NXEvent *)theEvent
  23. {
  24.     /* do what the superclass would do */
  25.     [super edit:aRect inView:controlView editor:textObj delegate:anObject event:theEvent];
  26.  
  27.     /* get the current text filter function */
  28.     oldTextFilter = [textObj textFilter];
  29.     
  30.     /* set the filter func to be the custom function for DateTextField */
  31.     [textObj setTextFilter:(NXTextFilterFunc)dateFilter];
  32.     return self;
  33. }
  34.  
  35. - endEditing:anObject
  36. {
  37.     /* restore the original text filter function */
  38.     [anObject setTextFilter:(NXTextFilterFunc)oldTextFilter];
  39.     
  40.     /* do whatever the superclass would do */
  41.     [super endEditing:anObject];
  42.     return self;
  43. }
  44.  
  45. char *dateFilter(id textObj, char *inputText, int *inputLength, int position)
  46. {
  47.     char temp[] = "";
  48.     
  49.     /* The form of the date is MM/DD/YY.  So find a '/' in position 2 and 
  50.      * position 5.  All other characters must be numbers but only 8 
  51.      * characters allowed 
  52.      */
  53.     if ((position == 2) || (position == 5)) {
  54.         if (*inputText != '/') {
  55.             *inputLength = 0;
  56.             return (temp);
  57.         } else {
  58.             return (inputText);
  59.         }
  60.     } else if (position >= 8) {
  61.         *inputLength = 0;
  62.         return (temp);
  63.     } else if ((*inputText >= '0') && (*inputText <= '9')) {
  64.         return (inputText);
  65.     } else {
  66.         *inputLength = 0;
  67.         return (temp);
  68.     }
  69. }
  70.  
  71. @end
  72.